/*
 *
 */
package org.jiscinvolve.astrodabis.barberry.common.data;

import org.jiscinvolve.astrodabis.barberry.common.core.Owned;
import org.jiscinvolve.astrodabis.barberry.common.core.Tracked;
import org.jiscinvolve.astrodabis.barberry.common.core.Identified;
import org.jiscinvolve.astrodabis.barberry.common.core.Identifier;

/**
 *
 */
public interface TapColumn
extends Identified, Tracked
    {

    public interface Factory
        {

        public Identifier ident(String ident);

        public TapColumn create(TapTable parent, String name);
        public TapColumn createQuick(TapTable parent, String name);

        public TapColumn select(Identifier ident);

        public Iterable<TapColumn> select();

        public Iterable<TapColumn> select(String name);

        public Iterable<TapColumn> select(TapTable parent);

        public TapColumn select(TapTable parent, String name);

        public TapColumn select(TapTable parent, Identifier ident);

        }

    public TapTable parent();

    public String name();

    public String text();

    public interface TapRows
        {

        public TapRow create(String value);
        public TapRow createQuick(String value);

        public TapRow select(String value);

        public Iterable<TapRow> select();

        }

    public TapRows rows();

    }

